<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Setting_model extends CI_Model {
	const TBL_Group = 'admin_setting_group';
	const TBL_Setting = 'admin_setting';

	/**
	 * 函数：获取配置组列表
	 * @param array $where 条件查询
	 * @param int $limit 每页显示数
	 * @param int $offset 偏移量每页显示数
	 * @return array
	 */
	public function getGroupList($limit, $offset,$where='') {
		if(empty($where)) return $this -> db -> order_by('inx asc') -> limit($limit, $offset) -> get(self::TBL_Group) -> result_array();
		else return $this -> db ->where($where)-> order_by('inx asc') -> limit($limit, $offset) -> get(self::TBL_Group) -> result_array();
	}

	/**
	 * 函数：获取配置项总数
	 * @return int 配置项总数
	 */
	public function getGroupCount() {
		return $this -> db -> count_all(self::TBL_Group);
	}

	/**
	 * 函数：获取分组key
	 * @return array
	 */
	public function getGroupKey() {
		return $this -> db ->select('key')-> order_by('inx asc')  -> get(self::TBL_Group) -> result_array();
	}

	/**
	 * 函数：插入配置项信息
	 * @param array $params 配置项信息
	 * @return bool
	 */
	public function insertGroup($params) {
		return $this -> db -> insert(self::TBL_Group, $params);
	}
	/**
	 * 函数：获取配置项信息
	 * @param int $id 配置项id
	 * @return array
	 */
	public function getGroup($id) {
		$condition['id'] = $id;
		return $res= $this -> db ->get_where(self::TBL_Group, array('id' => $id))->row_array();
	}
	/**
	 * 函数：修改配置项信息
	 * @param int $id 配置项id
	 * @param array $params 配置项信息
	 * @return bool
	 */
	public function updateGroup($id, $params) {
		$condition['id'] = $id;
		return $this -> db -> where($condition) -> update(self::TBL_Group, $params);
	}
	/**
	 * 函数：检测配置项下是否有配置
	 * @param int $id 配置项id
	 * @return bool
	 */
	public function testGroup($id) {
		$groupKey= $this -> db ->get_where(self::TBL_Group, array('id' => $id))->row_array()['key'];
		$res= $this -> db ->get_where(self::TBL_Setting, array('group_key' => $groupKey))->result();
		return $res && !empty($res)? 1 : 2;
	}
	/**
	 * 函数：删除配置项信息
	 * @param int $id 配置项id
	 * @return bool
	 */
	public function delGroup($id) {
		$condition['id'] = $id;
		return $this -> db -> where($condition) -> delete(self::TBL_Group);
	}

	/**
	 * 函数：获取配置列表
	 * @param array $where 条件查询
	 * @param int $limit 每页显示数
	 * @param int $offset 偏移量每页显示数
	 * @return array
	 */
	public function getSetList($limit, $offset,$where='') {
		if(empty($where)) return $this -> db -> order_by('inx asc') -> limit($limit, $offset) -> get(self::TBL_Setting) -> result_array();
		else return $this -> db ->where($where)-> order_by('inx asc') -> limit($limit, $offset) -> get(self::TBL_Setting) -> result_array();
	}

	/**
	 * 函数：获取配置总数
	 * @return int 配置总数
	 */
	public function getSetCount() {
		return $this -> db -> count_all(self::TBL_Setting);
	}
	/**
	 * 函数：插入配置信息
	 * @param array $params 配置信息
	 * @return bool
	 */
	public function insertSet($params) {
		return $this -> db -> insert(self::TBL_Setting, $params);
	}
	/**
	 * 函数：获取配置信息
	 * @param int $id 配置id
	 * @return array
	 */
	public function getSet($id) {
		$condition['id'] = $id;
		return $res= $this -> db ->get_where(self::TBL_Setting, array('id' => $id))->row_array();
	}
	/**
	 * 函数：修改配置信息
	 * @param int $id 配置id
	 * @param array $params 配置信息
	 * @return bool
	 */
	public function updateSet($id, $params) {
		$condition['id'] = $id;
		return $this -> db -> where($condition) -> update(self::TBL_Setting, $params);
	}
	/**
	 * 函数：删除配置信息
	 * @param int $id 配置id
	 * @return bool
	 */
	public function delSet($id) {
		$condition['id'] = $id;
		return $this -> db -> where($condition) -> delete(self::TBL_Setting);
	}
}
